---
sidebar_position: 1
---

# Нарушение GitHub Flow

Для случаев, когда кто-то:

- пушит в ветку по умолчанию (`master` или `main`) (случайно, специально) решение лабораторной работы, которое не было проверено преподавателем;
- одобряет самостоятельно запрос на слияние (случайно, специально) и осуществляет слияние веток без ведома преподавателя.

Требуется сделать:

1. Перейти в ветку по умолчанию и восстановить состояние затронутых файлов, которые не были проверены преподавателем. Предлагается делать через:
   - команду [`git revert`](https://git-scm.com/docs/git-revert), чтобы откатить ошибочный коммит (см. также ["git revert"](https://www.atlassian.com/ru/git/tutorials/undoing-changes/git-revert));
   - команду [`git checkout`](https://git-scm.com/docs/git-checkout), чтобы вернуть файл в состояние на определенный коммит (см. также ["How do I reset or revert a file to a specific revision?"](https://stackoverflow.com/questions/215718/how-do-i-reset-or-revert-a-file-to-a-specific-revision));
   - ручное редактирование файлов до первоначального состояния.
2. Закоммитить все внесенные изменения в локальной ветке по умолчанию и отправить изменения в удаленный репозиторий.
3. От последнего коммита создать ветку с решением лабораторной работы.
4. В новой ветке внести изменения в файлы для решения задач лабораторной работы. Предлагается делать через:
   - команду [`git cherry-pick`](https://git-scm.com/docs/git-cherry-pick), чтобы выборочно применить коммиты Git к текущей рабочей ветке (см. также ["Git Cherry Pick"](https://www.atlassian.com/ru/git/tutorials/cherry-pick) и ["Как в Git перенести commit из одной ветки в другую?"](http://paratapok.ru/developer-tools/2593_kak-v-git-perenesti-commit-iz-odnoj-vetki-v-druguyu/));
   - ручное редактирование файлов с целью решения задач лабораторной работы.
5. Отправить все изменения в удаленный репозиторий.
6. Создать новый запрос на слияние и назначить преподавателя.
7. Покаяться в содеянном в комментариях запроса на слияние.
